/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.statehome.impldao;

import br.com.statehome.idao.IDaoFiador;
import br.com.statehome.models.Fiador;
import br.com.statehome.util.UnidadePersistencia;
import java.util.List;
import javax.persistence.EntityManager;

/**
 *
 * @author Hermes
 * @versio 001
 * @since 27/04/2011
 *
 */
public class ImplDaoFiador implements IDaoFiador {

    public boolean cadastrar(Fiador fiador) {
        UnidadePersistencia up = new UnidadePersistencia();
        EntityManager em = up.getEm();
        em.getTransaction().begin();
        try {
            em.persist(fiador);
            em.getTransaction().commit();
            return true;
        } catch (Exception e) {
            em.getTransaction().rollback();
            return false;
        } finally {
            em.close();
        }
    }

    public boolean remover(Fiador fiador) {
        UnidadePersistencia up = new UnidadePersistencia();
        EntityManager em = up.getEm();
        em.getTransaction().begin();
        try {
            em.remove(fiador);
            em.getTransaction().commit();
            return true;
        } catch (Exception e) {
            em.getTransaction().rollback();
            return false;
        } finally {
            em.close();
        }
    }

    public Fiador buscar(String cpf) {
        UnidadePersistencia up = new UnidadePersistencia();
        EntityManager em = up.getEm();
        em.getTransaction().begin();
        try {
            String query = "SELECT * FROM Fiador pf WHERE cpf =: cpf";
            Fiador pf = (Fiador) em.createQuery(query).getSingleResult();
            return pf;
        } catch (Exception e) {
            em.close();
            return null;
        }
    }

    public List<Fiador> listar() {
        UnidadePersistencia up = new UnidadePersistencia();
        EntityManager em = up.getEm();
        em.getTransaction().begin();
        try {
            String query = "SELECT * FROM Fiador pf ";
            List<Fiador> listaPessoas = (List<Fiador>) em.createQuery(query).getResultList();
            return listaPessoas;
        } catch (Exception e) {
            em.close();
            return null;
        }
    }
    //modificar na interface também

    public List<Fiador> listarPorNome(String nome) {
        UnidadePersistencia up = new UnidadePersistencia();
        EntityManager em = up.getEm();
        em.getTransaction().begin();
        try {
            String query = "SELECT * FROM Fiador pf WHERE cpf = %: cpf%";//corrigir isto aqui
            List<Fiador> listaPessoas = (List<Fiador>) em.createQuery(query).getResultList();
            return listaPessoas;
        } catch (Exception e) {
            em.close();
            return null;
        }
    }

    public boolean alterar(Fiador fiador) {
        UnidadePersistencia up = new UnidadePersistencia();
        EntityManager em = up.getEm();
        em.getTransaction().begin();
        try {
            em.merge(fiador);
            em.getTransaction().commit();
            return true;
        } catch (Exception e) {
            em.getTransaction().rollback();
            return false;
        } finally {
            em.close();
        }
    }
}
